{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入最基本的数据处理工具\n",
    "# import numpy as np # 导入NumPy数学计算工具包\n",
    "import pandas as pd # 导入Pandas数据处理工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "      <th>浏览量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2646</td>\n",
       "      <td>1347.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>260004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>816</td>\n",
       "      <td>816.0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>100004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1224</td>\n",
       "      <td>612.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>164502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1261</td>\n",
       "      <td>1261.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>163001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1720</td>\n",
       "      <td>1720.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>260401</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1541</td>\n",
       "      <td>1541.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>220002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>827</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>107503</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>866</td>\n",
       "      <td>686.0</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>110504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1314</td>\n",
       "      <td>1300.0</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>229461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1431</td>\n",
       "      <td>1099.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>165004</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    点赞数     转发数  热度指数  文章评级     浏览量\n",
       "0  2646  1347.0     7     5  260004\n",
       "1   816   816.0     4     6  100004\n",
       "2  1224   612.0     6     5  164502\n",
       "3  1261  1261.0     6     6  163001\n",
       "4  1720  1720.0     7     5  260401\n",
       "5  1541  1541.0     7     5  220002\n",
       "6   827     NaN     5     7  107503\n",
       "7   866   686.0     5     9  110504\n",
       "8  1314  1300.0     8     5  229461\n",
       "9  1431  1099.0     6     5  165004"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads = pd.read_csv('易速鲜花微信软文.csv') # 读入数据\n",
    "# df_ads.astype(int)\n",
    "df_ads.head(10) # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "点赞数      0\n",
       "转发数     37\n",
       "热度指数     0\n",
       "文章评级     0\n",
       "浏览量      0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads.isna().sum() # NaN出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df_ads['转发数'].fillna(df_ads['转发数'].mean(), inplace=True) # 用均值补值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_ads = df_ads.dropna() # 删除NaN值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入数据可视化所需要的库\n",
    "import matplotlib.pyplot as plt #Matplotlib – Python画图工具库\n",
    "import seaborn as sns #Seaborn – 统计学数据可视化工具库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(df_ads['点赞数'],df_ads['浏览量'],'r.', label='Training data') # 用matplotlib.pyplot的plot方法显示散点图\n",
    "plt.xlabel('点赞数') # x轴Label\n",
    "plt.ylabel('浏览量') # y轴Label\n",
    "plt.legend() # 显示图例\n",
    "plt.show() # 显示绘图结果！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = pd.concat([df_ads['浏览量'], df_ads['热度指数']], axis=1) # 浏览量和热度指数\n",
    "fig = sns.boxplot(x='热度指数', y=\"浏览量\", data=data) # 用seaborn的箱线图画图\n",
    "fig.axis(ymin=0, ymax=800000); #设定y轴坐标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df_ads.drop(['浏览量'],axis=1) # 特征集，Drop掉便签相关字段\n",
    "y = df_ads.浏览量 # 标签集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2646</td>\n",
       "      <td>1347.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>816</td>\n",
       "      <td>816.0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1224</td>\n",
       "      <td>612.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1261</td>\n",
       "      <td>1261.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1720</td>\n",
       "      <td>1720.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    点赞数     转发数  热度指数  文章评级\n",
       "0  2646  1347.0     7     5\n",
       "1   816   816.0     4     6\n",
       "2  1224   612.0     6     5\n",
       "3  1261  1261.0     6     6\n",
       "4  1720  1720.0     7     5"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head() # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    260004\n",
       "1    100004\n",
       "2    164502\n",
       "3    163001\n",
       "4    260401\n",
       "Name: 浏览量, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.head() # 显示前几行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据集进行80%（训练集）和20%（验证集）的分割\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression # 导入线性回归算法模型\n",
    "model = LinearRegression() # 使用线性回归算法创建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, y_train) # 用训练集数据，训练机器，拟合函数，确定参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = model.predict(X_test) #预测测试集的Y值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>点赞数</th>\n",
       "      <th>转发数</th>\n",
       "      <th>热度指数</th>\n",
       "      <th>文章评级</th>\n",
       "      <th>浏览量真值</th>\n",
       "      <th>浏览量预测值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>150</th>\n",
       "      <td>1768</td>\n",
       "      <td>884.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>224904</td>\n",
       "      <td>204326.495272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>988</td>\n",
       "      <td>988.0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>113001</td>\n",
       "      <td>117182.827329</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1049</th>\n",
       "      <td>2062</td>\n",
       "      <td>1157.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>277002</td>\n",
       "      <td>236266.050505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>393</th>\n",
       "      <td>1392</td>\n",
       "      <td>1392.0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>121502</td>\n",
       "      <td>166316.290479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1255</th>\n",
       "      <td>1537</td>\n",
       "      <td>1319.0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>174002</td>\n",
       "      <td>206254.835807</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497</th>\n",
       "      <td>1913</td>\n",
       "      <td>896.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>177004</td>\n",
       "      <td>189916.572692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>644</th>\n",
       "      <td>1500</td>\n",
       "      <td>1356.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>246582</td>\n",
       "      <td>218800.099624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>1258</td>\n",
       "      <td>1258.0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>172504</td>\n",
       "      <td>200171.838771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>943</th>\n",
       "      <td>438</td>\n",
       "      <td>290.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>60004</td>\n",
       "      <td>-32628.683687</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1170</th>\n",
       "      <td>1350</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>168505</td>\n",
       "      <td>178150.881315</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>285 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       点赞数     转发数  热度指数  文章评级   浏览量真值         浏览量预测值\n",
       "150   1768   884.0     7     5  224904  204326.495272\n",
       "36     988   988.0     5     5  113001  117182.827329\n",
       "1049  2062  1157.0     7     5  277002  236266.050505\n",
       "393   1392  1392.0     5     6  121502  166316.290479\n",
       "1255  1537  1319.0     6     9  174002  206254.835807\n",
       "...    ...     ...   ...   ...     ...            ...\n",
       "497   1913   896.0     6     6  177004  189916.572692\n",
       "644   1500  1356.0     7     5  246582  218800.099624\n",
       "38    1258  1258.0     7     5  172504  200171.838771\n",
       "943    438   290.0     2     5   60004  -32628.683687\n",
       "1170  1350  1248.0     6     5  168505  178150.881315\n",
       "\n",
       "[285 rows x 6 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_ads_pred = X_test.copy() #测试集特征数据\n",
    "df_ads_pred['浏览量真值'] = y_test #测试集标签真值\n",
    "df_ads_pred['浏览量预测值'] = y_pred #测试集标签预测值\n",
    "df_ads_pred #显示数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "线性回归预测集评分： 0.4189365095307418\n",
      "线性回归训练集评分： 0.7826168129744089\n"
     ]
    }
   ],
   "source": [
    "print(\"线性回归预测集评分：\", model.score(X_test, y_test)) #评估模型\n",
    "print(\"线性回归训练集评分：\", model.score(X_train, y_train)) #训练集评分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
